!pip install pillow matplotlib  # 安装图像处理库


!pip install pillow matplotlib  


from PIL import Image
import matplotlib.pyplot as plt


# 打开x.jpg
img_x = Image.open("x.jpg")
width, height = img_x.size  # 获取图片宽高

# 裁剪上半部分（高度取前一半）
cropped_upper = img_x.crop((0, 0, width, height // 2))

# 显示并保存结果
plt.imshow(cropped_upper)
plt.show()
cropped_upper.save("图1_上半部分处理.jpg")


# 打开x.jpg（若已打开可省略，但建议单独写确保流程清晰）
img_x = Image.open("x.jpg")
width, height = img_x.size 

# 裁剪左半部分（宽度取前一半）
cropped_left = img_x.crop((0, 0, width // 2, height))

# 显示并保存结果
plt.imshow(cropped_left)
plt.show()
cropped_left.save("图2_左半部分处理.jpg")


img_x = Image.open("x.jpg")
width, height = img_x.size 

# 裁剪左上四分之一（宽、高各取前一半）
cropped_top_left = img_x.crop((0, 0, width // 2, height // 2))

plt.imshow(cropped_top_left)
plt.show()
cropped_top_left.save("图3_左上四分之一处理.jpg")


# 把坐标(100,100)的像素改为红色
pixels = img.load()  # 加载像素
pixels[100, 100] = (255, 0, 0)  # RGB红色

# 保存时注意：原图会被修改，建议先复制
img.copy().save("图4.png")


# 打开x.jpg
img_x = Image.open("x.jpg")
pixels = img_x.load()  # 加载像素数据

# 将坐标(2, 2)的像素改为红色（假设以该坐标为例，可根据作业实际要求调整）
pixels[2, 2] = (255, 0, 0)  # RGB红色值

# 显示并保存结果
plt.imshow(img_x)
plt.show()
img_x.save("图4_小区域像素处理.jpg")


# 打开x.jpg（若之前已打开且未关闭，可省略此步，为确保流程完整，建议保留）  
img_x = Image.open("x.jpg")  
pixels = img_x.load()  # 加载像素数据  

# 假设处理区域：将宽2-6、高2-6的区域涂成绿色（根据实际图片尺寸调整坐标）  
for x in range(2, 6):  
    for y in range(2, 6):  
        pixels[x, y] = (0, 255, 0)  # RGB绿色值  

# 显示并保存结果  
plt.imshow(img_x)  
plt.show()  
img_x.save("图5_指定区域颜色处理.jpg")  


# 打开galaxy-full.jpg  
img_galaxy = Image.open("galaxy-full.jpg")  
r, g, b = img_galaxy.split()  # 分离红、绿、蓝通道  

# 保留红色通道，绿蓝通道设为0（黑色）  
red_channel = Image.merge("RGB", (r, Image.new("L", img_galaxy.size, 0), Image.new("L", img_galaxy.size, 0)))  
plt.imshow(red_channel)  
plt.show()  
red_channel.save("图6_红色通道图.jpg")  


# 保留绿色通道，红、蓝通道设为0  
green_channel = Image.merge("RGB", (Image.new("L", img_galaxy.size, 0), g, Image.new("L", img_galaxy.size, 0)))  
plt.imshow(green_channel)  
plt.show()  
green_channel.save("图7_绿色通道图.jpg")  


# 保留蓝色通道  
blue_channel = b  # 直接使用分离出的蓝色通道  
plt.imshow(blue_channel)  
plt.show()  
blue_channel.save("图8_蓝色通道图.jpg")  


# 打开earth.jpg  
img_earth = Image.open("earth.jpg")  
width, height = img_earth.size  
pixels = img_earth.load()  

# 添加条纹（每隔一定像素设置为白色，让图像更亮）  
for x in range(width):  
    if x % 30 == 0:  # 控制条纹间隔，数值越小条纹越密  
        for y in range(height):  
            pixels[x, y] = (255, 255, 255)  # 白色  

# 放大显示并保存  
plt.figure(figsize=(15, 15))  
plt.imshow(img_earth)  
plt.show()  
img_earth.save("图9_条纹效果处理.jpg")  



